package com.ruoyi.workbench.mapper;

import com.ruoyi.workbench.domain.*;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 拜访日志Mapper接口
 *
 * @author hanjiafeng
 * @date 2021-02-25
 */
@Service
public interface WbVisitLogMapper {
    /**
     * 查询拜访日志
     *
     * @param id 拜访日志ID
     * @return 信息上报
     */
    WbVisitLog selectWbVisitLogById(Long id);

    /**
     * 查询拜访日志列表
     *
     * @param wbVisitLog 信息上报
     * @return 拜访日志集合
     */
    List<WbVisitLog> selectWbVisitLogList(WbVisitLog wbVisitLog);

    /**
     * 查询拜访日志列表
     *
     * @param wbVisitLog 信息上报
     * @return 拜访日志集合
     */
    List<WbWholeVisitLog> selectWbWholeVisitLogList(WbWholeVisitLog wbVisitLog);

    /**
     * 查询上报统计列表
     *
     * @param wbWholeUnitNew 部门
     * @param day            天数
     * @return 指定{day}的上报数量
     */
    List<WbVisitLogStatisticsOne> selectWbVisitLogStatisticsOne(@Param("wbWholeUnitNew") WbWholeUnitNew wbWholeUnitNew,
                                                                @Param("day") Integer day,
                                                                @Param("startTime") String startTime,
                                                                @Param("endTime") String endTime);

    /**
     * 查询上报统计列表
     *
     * @param wbWholeUnitNew 部门
     * @param day            查询天数
     * @param startTime      查询开始日期
     * @param endTime        查询结束日期
     * @param types          条线
     * @return 指定{day}的上报数量
     */
    List<WbVisitLogStatisticsOne> selectWbVisitLogStatisticsOneNew(@Param("wbWholeUnitNew") WbWholeUnitNew wbWholeUnitNew,
                                                                   @Param("day") Integer day,
                                                                   @Param("startTime") String startTime,
                                                                   @Param("endTime") String endTime,
                                                                   @Param("types") String[] types);

    /**
     * 新增拜访日志
     *
     * @param wbVisitLog 信息上报
     * @return 结果
     */
    int insertWbVisitLog(WbVisitLog wbVisitLog);

    /**
     * 修改拜访日志
     *
     * @param wbVisitLog 信息上报
     * @return 结果
     */
    int updateWbVisitLog(WbVisitLog wbVisitLog);

    /**
     * 删除拜访日志
     *
     * @param id 拜访日志ID
     * @return 结果
     */
    int deleteWbVisitLogById(Long id);

    /**
     * 批量删除拜访日志
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteWbVisitLogByIds(String[] ids);

    /**
     * 查询包含全部部门的日志
     *
     * @param wbWholeUnitVisitLogNew wbWholeUnitVisitLogNew
     * @return 列表
     */
    List<WbWholeUnitVisitLogNew> selectWbWholeUnitVisitLogNewList(@Param("wbWholeUnitVisitLogNew") WbWholeUnitVisitLogNew wbWholeUnitVisitLogNew, @Param("day") Integer period, @Param("startTime") String startTime, @Param("endTime") String endTime, @Param("types") String... types);

    /**
     * 检查号码是否已经在currentPhoneNumber或者transformedPhone中存在
     *
     * @param id          记录id
     * @param type        类型,0:只查currentPhoneNumber,1:currentPhoneNumber和transformedPhone都查
     * @param phoneNumber 待查号码
     * @return 是否存在
     */
    int checkPhoneNumberUnique(@Param("id") Long id, @Param("type") String type, @Param("phoneNumber") String phoneNumber);
}
